<?php

require_once (PASTA_SMARTY . 'ConfigSmarty.class.php');
require_once (PASTA_ADBDO_ALL . 'adodb-pager.inc.php');
require_once (PASTA_CONEXAO . 'Conexao.class.php');
require_once (CAMINHO_SERVIDOR . 'JSON.php');

class imprimiConteudo {

    function __construct() {
        
    }

    public function getObjSmarty() {
        if ($this->objSmarty == null)
            $this->objSmarty = ConfigSmarty::getConfigSmarty();
        return $this->objSmarty;
    }

    public function getConexao() {
        if ($this->objCon == null)
            $this->objCon = Conexao::getConexao();
        return $this->objCon;
    }

    public function getConexao2() {
        $conexao = new Conexao();
        $con = $conexao->getConexao();
        return $con;
    }

    public function getObjCripty() {
        if ($this->objCripty == null)
            $this->objCripty = new Cryptografa();
        return $this->objCripty;
    }

    public function getObjUsuario() {
        if ($this->user == null)
            $this->user = new Usuarios();
        return $this->user;
    }

    protected function getObjJson() {
        if ($this->objJason == null)
            $this->objJason = new Json();
        return $this->objJason;
    }

    private function executaGetAll($sql) {
        $result = self::getConexao2()->getAll($sql);
        self::getConexao2()->Close();
        return $result;
    }

    private function executaGetRowEnd($sql) {
        $result = end(self::getConexao2()->getRow($sql));
        self::getConexao2()->Close();
        return $result;
    }

    private function executaGetRow($sql) {
        $result = self::getConexao2()->getRow($sql);
        self::getConexao2()->Close();
        return $result;
    }
     public function getIncludesCssJs($params = null, $smarty = null) {
        $html = $smarty->fetch(PASTA_CONTEUDO_MODEL . "includesCssJs.tpl");
        return $html;
    }

    public function getCabecalho($params = null, $smarty = null) {
        $html = $smarty->fetch(PASTA_CONTEUDO_MODEL . "cabecalhoDefault.tpl");
        return $html;
    }

    public function getRodape($params = null, $smarty = null) {
        $html = $smarty->fetch(PASTA_CONTEUDO_MODEL . "rodapeDefault.tpl");
        return $html;
    }

    public function getConteudo($params = null, $smarty = null) {
        $area = Funcoes::getPastaDoCaminho();
//        $sql = "SELECT t.tpl,c.id_area FROM tb_tipo_conteudo t,tb_area c WHERE c.id_tipo=t.id_tipo AND c.area='" . $area . "'";
//        $tpl = self::executaGetRow($sql);
//        $sql = "SELECT * FROM tb_" . $tpl["tpl"] . " WHERE id_area=" . $tpl["id_area"] . "";
//        $dados = self::executaGetRow($sql);
        //Funcoes::debuga($dados,$sql);
        //$smarty->assign("PASTABANCO", PASTA_BANCO);
        //self::getObjSmarty()->assign("DADOS", $dados);
        $sql = "SELECT a.*,p.pasta FROM tb_area a INNER JOIN tb_pasta_sistema p ON p.id_pasta=a.id_pasta WHERE a.area='" . $area . "'";
        $dadosArea = end(self::executaGetAll($sql));
        //Funcoes::debuga(CAMINHO_SERVIDOR . $dadosArea["pasta"] . "/" . $dadosArea["tpl"],$dadosArea);
        //self::getObjSmarty()->assign("PASTA_CLASSES", PASTA_CLASSES_URL);
        if (!is_file(CAMINHO_SERVIDOR . $dadosArea["pasta"] . "/" . $dadosArea["tpl"])) {
            $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "conteudoDefault.tpl");
        } else {
            $html = self::getObjSmarty()->fetch(CAMINHO_SERVIDOR . $dadosArea["pasta"] . "/" . $dadosArea["tpl"]);
        }

        return $html;
    }

    public function getMenu($params = null, $smarty = null) {
        session_start();
        //Funcoes::debuga($_SESSION['usuario']);
        if (isset($_SESSION['validacao'])) {
            self::getObjSmarty()->assign("FORM", self::existeStringUrl("formulario"));
            self::getObjSmarty()->assign("USUARIO", $_SESSION['usuario']);
            self::getObjSmarty()->assign("URLEXECUTE", URL);
            $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "menuAdminGeral.tpl");
        } else {
            $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "login.tpl");
        }
        return $html;
    }

    public function getMigalhaDePao($params = null, $smarty = null) {
        $migalha = Funcoes::getCaminhoMigalha();
        $smarty->assign("DADOS", $migalha);
        $html = $smarty->fetch(PASTA_CONTEUDO_MODEL . "migalhaDePao.tpl");
        return $html;
    }

    public function getDadosArea($params = null, $smarty = null) {
        if (isset($params["area"]) && !empty($params["area"])) {
            $sql = "SELECT * FROM tb_area WHERE area='" . $params["area"] . "'";
        } else {
            $sql = "SELECT * FROM tb_area WHERE area='" . Funcoes::getPastaDoCaminho() . "'";
        }
        $dados_area = self::executaGetRow($sql);
        $smarty->assign("DADOS_AREA", $dados_area);
    }

    public function getLogoPortal($params = null, $smarty = null) {
        $sql = "SELECT nome_foto,altura_cabecalho FROM tb_config_layout WHERE id_layout=1";
        $logo = self::executaGetRow($sql);
        $smarty->assign("LOGO", $logo["nome_foto"]);
        $smarty->assign("MAX_HEIGHT", $logo["altura_cabecalho"]);
    }

    public function getBanner($params = null, $smarty = null) {
        $categoria = $params["categoria"];
        self::getCaminhoPastaBancoClasse();
        $sql = "SELECT * FROM tb_banner WHERE id_categoria_banner=" . $categoria . " AND status=1 ORDER BY ordem asc";
        $arrBanner = self::executaGetAll($sql);
        self::getObjSmarty()->assign("ARRBANNER", $arrBanner);
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "banner.tpl");
        return $html;
    }
    public function getCarousel($params = null, $smarty = null) {
        $categoria = $params["id_album"];
        self::getCaminhoPastaBancoClasse();
        $sql = "SELECT * FROM tb_fotos WHERE id_categoria_fotos=" . $categoria . " AND status=1 ORDER BY id_foto DESC";
        $arrFotos = self::executaGetAll($sql);
        //Funcoes::debuga($arrFotos);
        self::getObjSmarty()->assign("GALERIA", $arrFotos);
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "carousel.tpl");
        return $html;
    }

    public function getNomeMenuAreaAtual($params = null, $smarty = null) {
        $pasta = Funcoes::getPastaDoCaminho();
        $sql = "SELECT descricao FROM tb_area WHERE area='" . $pasta . "'";
        $result = end(self::executaGetRow($sql));
        if (empty($result)) {
            $sql = "SELECT descricao FROM tb_sub_area WHERE area='" . $pasta . "'";
            $result = end(self::executaGetRow($sql));
        }
        return strtoupper($result);
    }

    public function getCategoriaFotos($params = null, $smarty = null) {
        if (!empty($_GET["album"])) {
            $idAlbum = self::getObjCripty()->decrypt($_GET["album"]);
            $sql = "SELECT * FROM tb_fotos WHERE id_categoria_fotos=" . $idAlbum . "";
            $dados = self::executaGetAll($sql);
            $sql = "SELECT descricao FROM tb_categoria_fotos WHERE id_categoria_fotos=" . $idAlbum . "";
            $categoria = self::executaGetRow($sql);
            self::getObjSmarty()->assign("PASTA_IMAGENS_URL", URL_PASTA_IMAGENS_SALVAS);
            self::getObjSmarty()->assign("FOTOS", $dados);
            self::getObjSmarty()->assign("TITULO", $categoria["descricao"]);

            $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "gridFotos_imageFlow.tpl");
        } else {
            $sql = "SELECT * FROM tb_categoria_fotos";
            $dados = self::executaGetAll($sql);
            foreach ($dados as $i => $valor) {
                $dados[$i]["id_categoria_fotos"] = self::getObjCripty()->crypt($valor["id_categoria_fotos"]);
            }
            self::getObjSmarty()->assign("PASTA_IMAGENS_URL", URL_PASTA_IMAGENS_SALVAS);
            self::getObjSmarty()->assign("CATEGORIAS", $dados);
            $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "categoriaFotos.tpl");
        }
        return $html;
    }

//    //exemplo Ajax não funfa
//    public function getGaleriaFotos2() {
//        $sql = "SELECT * FROM tb_fotos WHERE id_categoria_fotos=" . $_GET['id'] . "";
//        $dados = self::executaGetAll($sql);
//        self::getObjSmarty()->assign("PASTA_IMAGENS_URL", URL_PASTA_IMAGENS_SALVAS);
//        self::getObjSmarty()->assign("FOTOS", $dados);
//        self::getObjSmarty()->assign("TITULO", "FOTOS");
//        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "gridFotos_imageFlow.tpl");
//        if ($_GET['jsoncallback']) {
//            print ($_GET["jsoncallback"] . "(" . self::getObjJson()->encode(array("resultado" => true, "retorno" => $html)) . ")");
//         }
//    }
    public function getGaleriaFotos($id) {
        $sql = "SELECT * FROM tb_fotos WHERE id_categoria_fotos=" . $id . "";
        $dados = self::executaGetAll($sql);
        self::getObjSmarty()->assign("PASTA_IMAGENS_URL", URL_PASTA_IMAGENS_SALVAS);
        self::getObjSmarty()->assign("FOTOS", $dados);
        self::getObjSmarty()->assign("TITULO", "FOTOS");
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "gridFotos_imageFlow.tpl");
        //Funcoes::debuga($dados,$html);
        return $html;
    }

    public function getMenuSite($params = null, $smarty = null) {
        $sql = "SELECT * FROM tb_area WHERE status=1 ORDER BY ordem limit 7";
        $dados = self::executaGetAll($sql);
        foreach ($dados as $index => $valor) {
            $sql = "SELECT * FROM tb_sub_area WHERE status=1 AND id_area=" . $valor["id_area"] . " AND id_item_subarea=0 ORDER BY ordem ";
            $result = self::executaGetAll($sql);
            $dados[$index]["subArea"] = ($result) ? $result : null;
        }
        foreach ($dados as $index => $valorSub) {
            if (is_array($valorSub["subArea"])) {
                foreach ($valorSub["subArea"] as $index2 => $valorSub2) {
                    if ($valorSub2["id_subarea"]) {
                        $sql = "SELECT * FROM tb_sub_area WHERE status=1 AND id_item_subarea=" . $valorSub2["id_subarea"] . " ORDER BY ordem ";
                        $result = self::executaGetAll($sql);
                        $teste[] = $sql;
                        if ($result) {
                            $dados[$index]["subArea"][$index2]["item"] = $result;
                        }
                    }
                }
            }
        }
        $areaAtual = Funcoes::getPastaDoCaminho();
        self::getObjSmarty()->assign("AREA_ATUAL", $areaAtual);
        self::getObjSmarty()->assign("DADOS", $dados);
        self::getObjSmarty()->assign("SUBAREA", $dadosSubArea);
        self::getObjSmarty()->assign("ITENSSUBAREA", $itensSubArea);
        self::getObjSmarty()->assign("PORTAL", PASTA_PORTAL_URL);
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "menuPortal.tpl");
        return $html;
    }

    public function getCaminhoPastaBancoClasse($params = null, $smarty = null) {
        self::getObjSmarty()->assign("URLEXECUTE", URL);
        self::getObjSmarty()->assign("URLATUAL", URL_SITE_ATUAL);
        self::getObjSmarty()->assign("URL_IMG_SALVAS", URL_PASTA_IMAGENS_SALVAS);
        self::getObjSmarty()->assign("URL_IMG", URL_PASTA_IMAGENS);
        self::getObjSmarty()->assign("URL_ARQUIVOS_SALVOS", URL_PASTA_ARQUIVOS_SALVOS);
    }

    public function getCaminhoPastaBanco($params = null, $smarty = null) {
        $smarty->assign("URLEXECUTE", URL);
        $smarty->assign("URLATUAL", URL_SITE_ATUAL);
        $smarty->assign("URL_IMG_SALVAS", URL_PASTA_IMAGENS_SALVAS);
        $smarty->assign("URL_IMG", URL_PASTA_IMAGENS);
        $smarty->assign("URL_ARQUIVOS_SALVOS", URL_PASTA_ARQUIVOS_SALVOS);
    }

    public function getCombo($params = null, $smarty = null, $getDecodificado = null) {
        $tabela = trim($params["tabela"]);
        $order = trim($params["order"]);
        $campo = trim($params["campo"]);
        $id = trim($params["id"]);
        $valor = trim($params["valor"]);
        $name = trim($params["name"]);
        $class = trim($params["class"]);
        $noStatus = trim($params["noStatus"]);
        $condicao = trim($params["condicao"]);
        $atributo = trim($params["atributo"]);
        //Funcoes::debuga($params);

        $sql = "SELECT " . $campo . "," . $id . " FROM " . $tabela . " WHERE 1=1 ";
        if (empty($noStatus)) {
            $sql.=" AND status=1 ";
        }
        if (!empty($condicao)) {
            $sql.=" AND " . $condicao . " ";
        }
        if (!empty($order)) {
            $sql.=" ORDER BY " . $order;
        }
        if (empty($atributo)) {
            $atributo = null;
        }
        $rs = self::getConexao()->Execute($sql);
        //Funcoes::debuga($rs, $sql);
        $html = $rs->GetMenu($campo, $id, false, false, 0, $atributo, null, $valor, $name, $class);
        return $html;
    }

    public function getMenuPrincipal($params = null, $smarty = null, $getDecodificado = null) {
        $idMenu = $getDecodificado["menu"];
        if (empty($idMenu["id_tipo"])) {
            $idMenu = ID_MENU_ADMIN_INICIAL;
        } else {
            $idMenu = $idMenu["id_tipo"];
        }
        $sql = "SELECT * FROM tb_menu WHERE status=1 AND id_tipo_menu=" . $idMenu . " ORDER BY ordem";
        $menuDados = self::executaGetAll($sql);
        if ($menuDados) {
            foreach ($menuDados as $index => $dados) {
                $menuDados[$index]["classe"] = self::getObjCripty()->crypt($dados["classe"]);
                $menuDados[$index]["tipo"] = self::getObjCripty()->crypt($dados["tipo"]);
                $menuDados[$index]["titulo"] = self::getObjCripty()->crypt($dados["descricao"]);
            }
        }
        $sql = "SELECT id_tipo, descricao FROM tb_tipo_menu WHERE status=1 ORDER BY ordem";
        $menuDadosGeral = self::executaGetAll($sql);
        $linkMenu = "imprimiConteudo:getMenuPrincipal&menu=";
        foreach ($menuDadosGeral as $i => $valor) {
            $menuDadosGeral[$i]["link"] = self::getObjCripty()->crypt($linkMenu . $valor["id_tipo"]);
        }
        $smarty->assign("MENUGERALDADOS", $menuDadosGeral);
        $smarty->assign("MENUDADOS", $menuDados);
        $smarty->assign("IDMENUADMINATUAL", $idMenu);
        $html = $smarty->fetch(PASTA_CONTEUDO_MODEL . "getConteudoAdminGeral.tpl");
        if ($params['json']) {
            print ($params["json"] . "(" . self::getObjJson()->encode(array("resultado" => true, "retorno" => $html)) . ")");
        } else {
            $smarty->assign("TABELA_MENU_ADMIN", $html);
        }
    }

    public function trataMsgGet() {
        $pos = stripos(URL_SITE_ATUAL, "&f=");
        $lixo = substr(URL_SITE_ATUAL, $pos);
        if ($pos > 0) {
            $url = str_replace($lixo, "", URL_SITE_ATUAL);
        } else {
            $url = URL_SITE_ATUAL;
        }
        return $url;
    }

    public function existeStringUrl($val) {
        $pos = stripos(URL_SITE_ATUAL, $val);
        if ($pos > 0) {
            $resul = true;
        } else {
            $resul = false;
        }
        return $resul;
    }

    public function getLista($params = null, $smarty = null, $getDecodificado = null) {
        session_start();
        //Funcoes::debuga($_SESSION['usuario']);
        if (isset($_SESSION['validacao'])) {
            $paramBtFecharMsg = "imprimiConteudo:fecharMsgAlerta";
            self::getObjSmarty()->assign("PARAM_FECHAR_MSG", self::getObjCripty()->crypt($paramBtFecharMsg));
            self::getObjSmarty()->assign("CANCELA", URL_SITE . "?c=" . $_GET['c'] . "&ti=" . $_GET['ti']);
            //Tratando os parametros
            $classe = self::getObjCripty()->decrypt($_GET['c']);
            $funcao = self::getObjCripty()->decrypt($_GET['f']);
            $registro = self::getObjCripty()->decrypt($_GET['v']);
            $tipo = self::getObjCripty()->decrypt($_GET['t']);
            $titulo = self::getObjCripty()->decrypt($_GET['ti']);
            $order = self::getObjCripty()->decrypt($_GET['order']);
            $busca = $_POST['busca'];
            $colBusca = $_POST['coluna'];
            //Funcoes::debuga($_POST);
            //tratando a tabela certa a listar
            if (!empty($classe)) {
                $tabela = "tb_" . $classe;
            }
            if ($tabela) {
                $idTabela = self::executaGetRow("SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='" . BASE . "' 
                AND TABLE_NAME='" . $tabela . "'");
                $idTabela = $idTabela["COLUMN_NAME"];
            }
            //pegando os parametros atuais e guardando-os em uma variavel definida
            $parametros = (isset($_GET['c'])) ? "?c=" . $_GET['c'] : "";
            $parametros.=(isset($_GET['t'])) ? "&t=" . $_GET['t'] : "";
            $parametros.=(isset($_GET['f'])) ? "&f=" . $_GET['f'] : "";
            $parametros.=(isset($_GET['v'])) ? "&v=" . $_GET['v'] : "";
            $parametros.=(isset($_GET['ti'])) ? "&ti=" . $_GET['ti'] : "";
            $parametros.=(isset($_GET['order'])) ? "&order=" . $_GET['order'] : "";
            define("VARGET", $parametros);

            //se for exibir a Lista
            if ($funcao != 'editar' && $funcao != 'cadastrar' && $funcao != 'status' && $funcao != 'excluir' && $tipo != 'tela') {
                if ($tabela) {
                    //dados das chaves estrangeiras
                    $referencia = self::executaGetAll("SELECT  TABLE_NAME,COLUMN_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME FROM information_schema.KEY_COLUMN_USAGE 
                WHERE TABLE_SCHEMA = '" . BASE . "' AND TABLE_NAME = '" . $tabela . "' AND REFERENCED_TABLE_NAME IS NOT NULL;");
                    //todas as colunas ta tabela exceto colunas chaves estrangeiras
                    $colunasTb = self::executaGetAll("SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='" . BASE . "' 
                AND TABLE_NAME='" . $tabela . "' AND COLUMN_KEY!='MUL'");
                    //Funcoes::debuga($colunasTb,$referencia);
                }
                //MONTA A QUERY################################
                foreach ($referencia as $valor) {
                    $join.=" INNER JOIN  " . $valor["REFERENCED_TABLE_NAME"] . " 
                    ON " . $valor["REFERENCED_TABLE_NAME"] . "." . $valor["REFERENCED_COLUMN_NAME"] . "=
                        " . $valor["TABLE_NAME"] . "." . $valor["COLUMN_NAME"];
                    $colunsRef.="," . $valor["REFERENCED_TABLE_NAME"] . ".descricao as descricao_" . str_replace("tb_", "", $valor["REFERENCED_TABLE_NAME"]);
                }
                $countRef = count($referencia);
                for ($i = 0; $i < $countRef; $i++) {
                    //Condiçao caso a busca seja referente a campo em outra tabela ligada por chave estrangeira
                    //$arr[] = "descricao_" . str_replace("tb_", "", $referencia[$i]["REFERENCED_TABLE_NAME"]);
                    if ($_POST['coluna'] == "descricao_" . str_replace("tb_", "", $referencia[$i]["REFERENCED_TABLE_NAME"])) {
                        $colBusca = $referencia[$i]["REFERENCED_TABLE_NAME"] . ".descricao";
                        $i = $countRef;
                    } else {
                        if (empty($_POST['coluna'])) {
                            $colBusca = "";
                        } else {
                            $colBusca = $referencia[$i]["TABLE_NAME"] . "." . $_POST['coluna'];
                        }
                    }
                }
                foreach ($colunasTb as $i => $valor) {
                    if ($valor["COLUMN_NAME"] != "data_cadastro" && $valor["COLUMN_NAME"] != "data_alteracao" && $valor["COLUMN_NAME"] != "usuario_cad" && $valor["COLUMN_NAME"] != "usuario_alt") {
                        if ($i != 0) {
                            $colunas.="," . $tabela . "." . $valor["COLUMN_NAME"];
                        } else {
                            $colunas.="" . $tabela . "." . $valor["COLUMN_NAME"];
                        }
                    }
                }
                $complemento = "";
                $complemento.=(!empty($busca) && !empty($colBusca)) ? " WHERE " . $colBusca . " like '" . $busca . "%' " : "";
                $complemento.=(!empty($order)) ? " ORDER BY " . $order . " " : "";

                $sql = "SELECT " . $colunas . $colunsRef . " FROM " . $tabela . $join . $complemento;
                //#############################################
                //Funcoes::debuga($colBusca,$arr);

                $paginacao = new ADODB_Pager(self::getConexao(), $sql, null, true);
                return $paginacao->Render(QUANT_LINHAS_TABELA, $titulo); //número de registro q serão exibidos por pagina,e titulo da listagem
            } else if ($funcao == 'cadastrar') {
                if (is_file(PASTA_CONTEUDO_MODEL . "form" . $classe . ".tpl")) {
                    $tpl = PASTA_CONTEUDO_MODEL . "form" . $classe . ".tpl";
                } else if (is_file(PASTA_CONTEUDO_ESPECIFICO . "form" . $classe . ".tpl")) {
                    $tpl = PASTA_CONTEUDO_ESPECIFICO . "form" . $classe . ".tpl";
                } else {
                    self::getObjSmarty()->assign("TITULO_ERRO", "TPL não encontrado!");
                    self::getObjSmarty()->assign("MSG_ERRO", "form" . $classe . ".tpl não encontrado, favor criá-lo para o devido funcionamento do sistema.");
                    $tpl = PASTA_CONTEUDO_MODEL . "erro.tpl";
                }
                $smarty->assign("PASTABANCO", PASTA_BANCO);
                $html = self::getObjSmarty()->fetch($tpl);
                return $html;
            } else if ($funcao == 'editar') {
                $sql = "SELECT * FROM " . $tabela . " WHERE " . $idTabela . "=" . $registro;
                $dados = self::executaGetAll($sql);
                $dados = Funcoes::validaDatasPt($dados[0]);
                //método para preencher o formulário
                Funcoes::preparaDadosFormTipoTela($dados, $registro, self::getObjSmarty());

                if (is_file(PASTA_CONTEUDO_MODEL . "form" . $classe . ".tpl")) {
                    $tpl = PASTA_CONTEUDO_MODEL . "form" . $classe . ".tpl";
                } else if (is_file(PASTA_CONTEUDO_ESPECIFICO . "form" . $classe . ".tpl")) {
                    $tpl = PASTA_CONTEUDO_ESPECIFICO . "form" . $classe . ".tpl";
                } else {
                    self::getObjSmarty()->assign("TITULO_ERRO", "TPL não encontrado!");
                    self::getObjSmarty()->assign("MSG_ERRO", "form" . $classe . ".tpl não encontrado, favor criá-lo para o devido funcionamento do sistema.");
                    $tpl = PASTA_CONTEUDO_MODEL . "erro.tpl";
                }
                $smarty->assign("PASTABANCO", PASTA_BANCO);
                self::getObjSmarty()->assign("USUARIO_ALT", "FernandoBs");
                self::getObjSmarty()->assign("USUARIO_CAD", "Bruno");
                $html = self::getObjSmarty()->fetch($tpl);
                return $html;
            } else if ($funcao == 'excluir') {
                if ($tabela == "tb_area") {
                    $sql2 = "SELECT area FROM " . $tabela . " WHERE " . $idTabela . "=" . $registro;
                    $dados = self::executaGetRow($sql2);
                    if ($dados) {
                        $caminhoDel = PASTA_PORTAL;
                        Funcoes::deletaPastaeSubpasta($dados["area"], $caminhoDel);
                    }
                } else if ($tabela == "tb_sub_area") {
                    $sql2 = "SELECT area,caminho FROM " . $tabela . " WHERE " . $idTabela . "=" . $registro;
                    $dados = self::executaGetRow($sql2);
                    $caminho = $dados["caminho"];
                    if ($dados) {
                        $caminho = str_replace($dados["area"] . "/", "", $caminho);
                        $caminhoDel = PASTA_PORTAL . $caminho;
                        Funcoes::deletaPastaeSubpasta($dados["area"], $caminhoDel);
                    }
                }
                if ($tabela == "tb_fotos") {
                    $sql = "SELECT caminho_foto FROM " . $tabela . " WHERE " . $idTabela . "=" . $registro;
                    $dados = self::executaGetRow($sql);
                    if (file_exists($dados["caminho_foto"])) {
                        unlink($dados["caminho_foto"]);
                    }
                }
                $sql = "DELETE FROM " . $tabela . " WHERE " . $idTabela . "=" . $registro;
                self::getConexao()->Execute($sql);
                self::getConexao()->Close();
                $url = self::trataMsgGet();
                Header("Location: " . $url . "&msg=" . $msg);
            } else if ($funcao == 'status') {
                $sql = "SELECT status FROM " . $tabela . " WHERE " . $idTabela . "=" . $registro;
                $dados = self::executaGetRow($sql);
                $msg = self::getObjCripty()->crypt(MSG_STATUS);
                if ($dados["status"] == 0) {
                    $sql = "UPDATE " . $tabela . " SET status=1 WHERE " . $idTabela . "=" . $registro;
                    self::getConexao()->Execute($sql);
                    self::getConexao()->Close();
                    $url = self::trataMsgGet();
                    Header("Location: " . $url . "&msg=" . $msg);
                } else {
                    $sql = "UPDATE " . $tabela . " SET status=0 WHERE " . $idTabela . "=" . $registro;
                    self::getConexao()->Execute($sql);
                    self::getConexao()->Close();
                    $url = self::trataMsgGet();
                    Header("Location: " . $url . "&msg=" . $msg);
                }
            } else if ($tipo == 'tela') {
                if (is_file(PASTA_CONTEUDO_MODEL . "tela" . $classe . ".tpl")) {
                    if (empty($registro)) {
                        $registro = 1;
                    }
                    if (!empty($idTabela) && !empty($tabela) && !empty($registro)) {
                        $sql = "SELECT * FROM " . $tabela . " WHERE " . $idTabela . "=" . $registro;
                        $result = self::executaGetRow($sql);
                        //método para preencher o formulário
                        Funcoes::preparaDadosFormTipoTela($result, $registro, self::getObjSmarty());
                    }
                    $tpl = PASTA_CONTEUDO_MODEL . "tela" . $classe . ".tpl";
                } else if (is_file(PASTA_CONTEUDO_ESPECIFICO . "tela" . $classe . ".tpl")) {
                    $tpl = PASTA_CONTEUDO_ESPECIFICO . "tela" . $classe . ".tpl";
                } else {
                    self::getObjSmarty()->assign("TITULO_ERRO", "TPL não encontrado!");
                    self::getObjSmarty()->assign("MSG_ERRO", "tela" . $classe . ".tpl não encontrado, favor criá-lo para o devido funcionamento do sistema.");
                    $tpl = PASTA_CONTEUDO_MODEL . "erro.tpl";
                }
                if ($classe == "gerador") {
                    $param = "imprimiConteudo:getTelaGerador";
                    self::getObjSmarty()->assign("LINKAJAX", self::getObjCripty()->crypt($param));
                    $param2 = "imprimiConteudo:viewFormulario";
                    self::getObjSmarty()->assign("LINKVIEW", self::getObjCripty()->crypt($param2));
                }
                $html = self::getObjSmarty()->fetch($tpl);
            }
        } else {
            $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "login.tpl");
        }
        return $html;
    }

    public function getBusca() {
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "tagBusca.tpl");
        return $html;
    }

    public function getLateralEsquerdaAreas($params = null, $smarty = null, $getDecodificado = null) {
        $area = Funcoes::getPastaDoCaminho();
        $sql = "SELECT id_subarea FROM tb_sub_area WHERE status=1 AND area='" . $area . "'";
        $idSubArea = self::executaGetRow($sql);
        $idSubArea = $idSubArea["id_subarea"];
        $sql = "SELECT * FROM tb_sub_area WHERE status=1 AND id_item_subarea=" . $idSubArea . "";
        $dadosAreas = self::executaGetAll($sql);
        $smarty->assign("DADOSAREAS", $dadosAreas);
        $smarty->assign("PORTAL", PASTA_PORTAL_URL);
    }

    public function getLateralEsquerdaSubAreas($params = null, $smarty = null, $getDecodificado = null) {
        $area = Funcoes::getPastaDoCaminho();
        $sql = "SELECT id_area FROM tb_area WHERE status=1 AND area='" . $area . "'";
        $idArea = self::executaGetRow($sql);
        $idArea = $idArea["id_area"];
        $sql = "SELECT * FROM tb_sub_area WHERE status=1 AND id_area=" . $idArea . "";
        $dadosAreas = self::executaGetAll($sql);
        self::getObjSmarty()->assign("DADOSAREAS", $dadosAreas);
        self::getObjSmarty()->assign("PORTAL", PASTA_PORTAL_URL);
        self::getObjSmarty()->assign("NOME_MENU_ATUAL", self::getNomeMenuAreaAtual());
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "lateralEsquerdaAreas.tpl");
        return $html;
    }

    public function getMenuVertical($params = null, $smarty = null, $getDecodificado = null) {
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "lateralEsquerdaAreas.tpl");
        return $html;
    }

    public function imprimeLateralEsquerdaAreas($params = null, $smarty = null, $getDecodificado = null) {
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "lateralEsquerdaAreas.tpl");
        return $html;
    }

    public function teste() {
        Funcoes::debuga($_GET['aba']);
    }

    public function getEventosHorizontal() {
        $sql = "SELECT * FROM tb_eventos limit 6";
        $dados = self::executaGetAll($sql);
        //Funcoes::debuga($dados);
        self::getObjSmarty()->assign("EVENTOS", $dados);
        self::getObjSmarty()->assign("PASTA_IMAGENS_URL", URL_PASTA_IMAGENS_SALVAS);
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "gridEventosHorizontal.tpl");
        return $html;
    }

    public function getEventosVertical() {
        $sql = "SELECT * FROM tb_eventos limit 6";
        $dados = self::executaGetAll($sql);
        //Funcoes::debuga($dados);
        self::getObjSmarty()->assign("EVENTOS", $dados);
        self::getObjSmarty()->assign("PASTA_IMAGENS_URL", URL_PASTA_IMAGENS_SALVAS);
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "gridEventosVertical.tpl");
        return $html;
    }

    public function getEventoDestaque() {
        $sql = "SELECT * FROM tb_eventos limit 1";
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "gridEventoDestaque02.tpl");
        return $html;
    }

    public function testeAjax() {
        Funcoes::debuga("okokok");
    }

    public function getAreasSite($params = null, $smarty = null, $getDecodificado = null) {
        $sql = "SELECT * FROM tb_area WHERE status=1 ORDER BY ordem limit 10";
        $dados = self::executaGetAll($sql);
        $smarty->assign("DADOS", $dados);
        $smarty->assign("PORTAL", PASTA_PORTAL_URL);
    }

    public function processaType($type) {
        if ($type == "tinyint") {
            $type = "checkbox";
        } else if ($type == "varchar") {
            $type = "text";
        } else if ($type == "text") {
            $type = "textArea";
        } else if ($type == "int") {
            $type = "number";
        }
        return $type;
    }

    public function processaValue($name) {
        $name = "$" . $name;
        return $name;
    }

    public function getTelaGerador($params = null, $smarty = null, $getDecodificado = null) {
        $tabela = $_GET["tabela"];
        if ($tabela) {
            $referencia = self::executaGetAll("SELECT  TABLE_NAME,COLUMN_NAME,REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME FROM information_schema.KEY_COLUMN_USAGE 
                WHERE TABLE_SCHEMA = '" . BASE . "' AND TABLE_NAME = '" . $tabela . "' AND REFERENCED_TABLE_NAME IS NOT NULL;");
            //todas as colunas ta tabela exceto colunas chaves estrangeiras
            $colunasTb = self::executaGetAll("SELECT COLUMN_NAME,DATA_TYPE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='" . BASE . "' 
                AND TABLE_NAME='" . $tabela . "' AND COLUMN_KEY!='MUL'");
            //Funcoes::debuga($colunasTb);
            foreach ($colunasTb as $i => $valor) {
                if ($valor["COLUMN_NAME"] == "nome_foto" || $valor["COLUMN_NAME"] == "caminho_foto") {
                    $foto[$valor["COLUMN_NAME"]] = $valor["COLUMN_NAME"];
                    unset($colunasTb[$i]);
                }
                if ($valor["COLUMN_NAME"] == "data_cadastro" || $valor["COLUMN_NAME"] == "status" || $valor["COLUMN_NAME"] == "usuario_alt" || $valor["COLUMN_NAME"] == "usuario_cad") {
                    unset($colunasTb[$i]);
                }
            }
            $colunasTb = array_values($colunasTb);
            foreach ($colunasTb as $i => $valor) {
                $colsGeral[$i]["name"] = $valor["COLUMN_NAME"];
                $colsGeral[$i]["type"] = self::processaType(trim($valor["DATA_TYPE"]));
                $colsGeral[$i]["value"] = self::processaValue($valor["COLUMN_NAME"]);
            }
            unset($colsGeral[0]);
            $colsGeral = array_values($colsGeral);

            foreach ($referencia as $valor) {
                if ($valor["COLUMN_NAME"] != "status") {
                    $tot = sizeof($colsGeral);
                    $colsGeral[$tot]["name"] = $valor["COLUMN_NAME"];
                    $colsGeral[$tot]["type"] = "select";
                    $colsGeral[$tot]["table_ref"] = $valor["REFERENCED_TABLE_NAME"];
                    $colsGeral[$tot]["id_ref"] = $valor["REFERENCED_COLUMN_NAME"];
                    $colsGeral[$tot]["value"] = self::processaValue($valor["COLUMN_NAME"]);
                }
            }
            //Funcoes::debuga($colsGeral,$foto);
        }
        if (!empty($foto)) {
            $foto = true;
        }
        $param = "imprimiConteudo:getTelaGerador";
        if ($_GET['json']) {
            self::getObjSmarty()->assign("LINKAJAX", self::getObjCripty()->crypt($param));
            self::getObjSmarty()->assign("DADOS_GERADOR", $colsGeral);
            self::getObjSmarty()->assign("COM_IMG", $foto);
            $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "getConteudoGerador.tpl");
        } else {
//            $sql = "SELECT descricao FROM tb_tipo_menu WHERE status=1 AND id_tipo='" . ID_MENU_ADMIN_INICIAL . "'";
//            $menu = end(self::executaGetRow($sql));
//            $smarty->assign("LINKAJAX", self::getObjCripty()->crypt($param));
//            $smarty->assign("MENUGERALDADOS", $menuDadosGeral);
//            $smarty->assign("MENUDADOS", $menuDados);
//            $smarty->assign("MENUADMINATUAL", $menu);
            $html = $smarty->fetch(PASTA_CONTEUDO_MODEL . "getConteudoGerador.tpl");
        }
        if (empty($colsGeral)) {
            $html = "";
        }
        if ($_GET['json']) {
            print ($_GET["json"] . "(" . self::getObjJson()->encode(array("resultado" => true, "retorno" => $html)) . ")");
        } else {
            $smarty->assign("DADOS_GERADOR", $html);
        }
    }

    public function viewFormulario($smarty) {
//        $acao = $_POST['acao'];
//        unset($_POST['acao']);
        Funcoes::debuga($_POST, "isso");

        if ($_POST["img"]) {
            $img = $_POST["img"];
            unset($_POST["img"]);
        }
        $arrpost = array_values($_POST);
        //Funcoes::debuga($_POST, $arrpost,$img);
        $x = 0;
        foreach ($arrpost as $i => $valor) {
            if ($i == 0) {
                $tabela = $valor;
            } else {
                if ($x >= 5) {
                    $x = 0;
                    $arrDados[] = $arrAux;
                    $arrAux = null;
                }
                $arrAux[$x] = $valor;
                $x++;
            }
            if ($i == count($arrpost) - 1) {
                $arrDados[] = $arrAux;
            }
        }
        foreach ($arrDados as $i => $valor) {
            $array = explode(":", $valor[0]);
            $novo[] = array_merge($valor, $array);
            unset($novo[$i][0]);
        }
        foreach ($novo as $i => $valor) {
            $novo[$i][1] = pegaLargura($valor[1]);
            $novo[$i][6] = "{" . $valor[6] . "}";
            if ($valor[7] == "select") {
                $novo[$i][3] = str_replace('"', '\"', $valor[3]);
            }
        }
        //Funcoes::debuga($novo);

        if (!empty($img)) {
            $smarty->assign("FILE", true);
        }
        //Funcoes::debuga($novo);

        $smarty->assign("DADOS_GERADOR", $novo);
        $smarty->assign("INI_SELECT", "{CHAMA_FUNCAO funcao=\"getCombo\" classe=\"imprimiConteudo\"");
        $smarty->assign("URL_IMG_SALVAS", "{" . "$" . "URL_IMG_SALVAS" . "}");
        $smarty->assign("if_nome_foto", "{if " . "$" . "nome_foto" . "}");
        $smarty->assign("nome_foto", "{" . "$" . "nome_foto" . "}");
        $smarty->assign("else", "{else}");
        $smarty->assign("fim_if", "{/if}");
        $campos = $smarty->fetch(PASTA_HTML_GERADOR . "formCampos.tpl");
        //Funcoes::debuga($novo);

        $smarty->assign("CAMPOS", $campos);
        $smarty->assign("CAMINHO_PASTA", "{CHAMA_FUNCAO funcao=\"getCaminhoPastaBanco\" classe=\"imprimiConteudo\"}");
        $smarty->assign("FORM", "form" . ucfirst(trim(str_replace("tb_", "", $tabela))));
        $smarty->assign("ACTION", "{" . "$" . "URLEXECUTE" . "}");
        $smarty->assign("TITULO", "");
        $smarty->assign("TABELA", $tabela);
        $smarty->assign("ID_TABELA", $id_tabela);
        $smarty->assign("URLATUAL", "{" . "$" . "URLATUAL" . "}");
        $smarty->assign("CANCELA", "{" . "$" . "CANCELA" . "}");
        $smarty->assign("BT", "x");
        $smarty->assign("TITULO_MSG", "{if " . "$" . "TITULO_MSG}" . "{" . "$" . "TITULO_MSG" . "}{else}Titulo Mensagem!{/if}");
        $smarty->assign("TEXTO_MSG", "{if " . "$" . "TEXTO_MSG}" . "{" . "$" . "TEXTO_MSG" . "}{else}Titulo Mensagem!{/if}");
        $html = $smarty->fetch(PASTA_HTML_GERADOR . "formCorpo.tpl");

        Funcoes::debuga(htmlentities($html));
    }

    public function fecharMsgAlerta($params = null, $arrayGet = null) {
        $link = Funcoes::retirarParametrosMSgDoGet($params);
        //Funcoes::debuga($link, $params);
        if ($params['json']) {
            print ($_GET["json"] . "(" . self::getObjJson()->encode(array("resultado" => true, "retorno" => $link)) . ")");
        }
    }

    public function getRedesSociais($params = null, $smarty = null) {
        $sql = "SELECT * FROM tb_redes_sociais WHERE status=1";
        $dados = self::executaGetAll($sql);
        $smarty->assign("REDES", $dados);
        $html = $smarty->fetch(PASTA_CONTEUDO_MODEL . "redesSociais.tpl");
        return $html;
    }

    public function getConteudoDinamico($params = null, $smarty = null) {
        if (isset($params["id_conteudo"])) {
            $sql = "SELECT * FROM tb_conteudo WHERE id_conteudo=" . $params["id_conteudo"];
            $dados = self::executaGetRow($sql);
            $smarty->assign("DADOS", $dados);
            $html = $smarty->fetch(PASTA_CONTEUDO_MODEL . "conteudo.tpl");
        }
        return $html;
    }

    public function getEnquete($params = null, $smarty = null) {
        if (isset($params["id_questao"])) {
            $sql = "SELECT id_opcao,descricao FROM tb_enquete_opcoes WHERE id_questao=" . $params["id_questao"];
            $opcoes = self::executaGetAll($sql);
            $sql = "SELECT descricao FROM tb_enquete_questao WHERE id_questao=" . $params["id_questao"];
            $questao = self::executaGetRowEnd($sql);
            self::getObjSmarty()->assign("DADOS", self::totalVotosOpcoes($params["id_questao"]));
            self::getObjSmarty()->assign("OPCOES", $opcoes);
            self::getObjSmarty()->assign("QUESTAO", $questao);
            self::getObjSmarty()->assign("URLEXECUTE", URL);
            self::getObjSmarty()->assign("PASTA_IMAGENS_URL", PASTA_IMAGENS);
            self::getObjSmarty()->assign("FORM", self::existeStringUrl("formulario"));
            self::getObjSmarty()->assign("LADO", $params["lado"]);
            $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "enquete.tpl");
        }
        return $html;
    }

    public function totalVotos($idQuestao) {
        $sql = "SELECT count(id_voto) as total FROM tb_enquete_votos WHERE id_opcao IN (select id_opcao from tb_enquete_opcoes where id_questao=" . $idQuestao . ")";
        $total = self::executaGetRowEnd($sql);
        return $total;
    }

    public function getAnuncio($params = null, $smarty = null) {
        if ($params["id_anuncio"]) {
            $sql = "SELECT * FROM tb_anuncio WHERE id_anuncio=" . $params["id_anuncio"] . " AND status=1";
            $dados = self::executaGetRow($sql);
            self::getObjSmarty()->assign("DADOS", $dados);
        }
        if (!empty($params["altura"])) {
            self::getObjSmarty()->assign("ALTURA", $params["altura"]);
        }
        $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "anuncio.tpl");
        return $html;
    }

    public function getListaNoticias($params = null, $smarty = null) {
        if (isset($params["id_categoria"]) && !empty($params["id_categoria"])) {
            $idCategoria = $params["id_categoria"];
        } else {
            $idCategoria = $params["id_categoria_default"];
        }
        if (!empty($idCategoria)) {
            $sqlCategoria = "SELECT id_categoria_noticia,descricao FROM tb_categorias_noticias WHERE id_categoria_noticia=" . $idCategoria;
            $categoria = self::executaGetRow($sqlCategoria);
            self::getObjSmarty()->assign("NOME_CATEGORIA", $categoria["descricao"]);
            self::getObjSmarty()->assign("ID_CATEGORIA", $categoria["id_categoria_noticia"]);
        }
        $id_noticia = $_GET["noticia"];
        if (!empty($id_noticia)) {
            $sql = "SELECT * FROM tb_noticias WHERE id_noticia=" . $id_noticia;
            $dados = self::executaGetRow($sql);
            self::getConexao()->Close();
            self::getObjSmarty()->assign("DADOS", $dados);

            $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "viewNoticias.tpl");
        } elseif ($params["limite"] && $params["previa"] == "sim") {
            if (empty($params["largura"])) {
                $params["largura"] = "span2";
            }
            $sql = "SELECT n.*,cn.descricao as desc_categoria FROM tb_noticias n INNER JOIN tb_categorias_noticias cn ON cn.id_categoria_noticia=n.id_categoria_noticia 
             WHERE n.status=1 AND cn.id_categoria_noticia=" . $idCategoria . " order by n.id_noticia desc LIMIT " . $params["limite"];

            $dados = self::executaGetAll($sql);
            self::getObjSmarty()->assign("LARGURA", $params["largura"]);
            self::getObjSmarty()->assign("DADOS", $dados);
            $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "gridNoticiasModel01.tpl");
        } else {
            //ESTRUTURA INICIAL PAGINACAO
            $config = self::getDadosConfig();
            $limite = $config["paginacao_noticias_limite"];
            $pag = ($_GET['pag']);
            if ($idCategoria) {
                $sql = "SELECT n.*,cn.descricao as desc_categoria FROM tb_noticias n INNER JOIN tb_categorias_noticias cn ON cn.id_categoria_noticia=n.id_categoria_noticia 
                        WHERE n.status=1 AND cn.id_categoria_noticia=" . $idCategoria . " order by n.id_noticia desc " . self::getPaginacaoLimite($pag, $limite);
                $sqlCount = "SELECT count(*) as total FROM tb_noticias n INNER JOIN tb_categorias_noticias cn ON cn.id_categoria_noticia=n.id_categoria_noticia 
                             WHERE n.status=1 AND cn.id_categoria_noticia=" . $idCategoria;
            } else {
                $sql = "SELECT n.*,cn.descricao as desc_categoria FROM tb_noticias n INNER JOIN tb_categorias_noticias cn ON cn.id_categoria_noticia=n.id_categoria_noticia 
                WHERE n.status=1 order by n.id_noticia desc " . self::getPaginacaoLimite($pag, $limite);
                $sqlCount = "SELECT count(*) as total FROM tb_noticias n INNER JOIN tb_categorias_noticias cn ON cn.id_categoria_noticia=n.id_categoria_noticia 
                             WHERE n.status=1";
            }

            $total = self::executaGetRowEnd($sqlCount);
            $dados = self::executaGetAll($sql);
            self::getObjSmarty()->assign("DADOS", $dados);
            //ESTRUTURA FINAL PAGINACAO 
            self::getPaginacao(self::getObjSmarty(), $pag, $total, $limite);
            ######################################################
            $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "listaNoticias.tpl");
        }
        return $html;
    }

    public function getListaEventos($params = null, $smarty = null) {
        if (isset($params["id_categoria"]) && !empty($params["id_categoria"])) {
            $idCategoria = $params["id_categoria"];
        } else {
            $idCategoria = $params["id_categoria_default"];
        }
        if (!empty($idCategoria)) {
            $sqlCategoria = "SELECT id_categoria_noticia,descricao FROM tb_categorias_noticias WHERE id_categoria_noticia=" . $idCategoria;
            $categoria = self::executaGetRow($sqlCategoria);
            self::getObjSmarty()->assign("NOME_CATEGORIA", $categoria["descricao"]);
            self::getObjSmarty()->assign("ID_CATEGORIA", $categoria["id_categoria_noticia"]);
        }
        $id_evento = $_GET["evento"];
        if (!empty($id_evento)) {
            $sql = "SELECT * FROM tb_eventos WHERE id_evento=" . $id_evento;
            $dados = self::executaGetRow($sql);
            self::getConexao()->Close();
            self::getObjSmarty()->assign("DADOS", $dados);

            $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "viewEventos.tpl");
        } elseif ($params["limite"] && $params["previa"] == "sim") {
            if (empty($params["largura"])) {
                $params["largura"] = "span2";
            }
            $sql = "SELECT e.*,ce.descricao as desc_categoria FROM tb_eventos e INNER JOIN tb_categorias_eventos ce ON ce.id_categoria_evento=e.id_categoria_evento 
             WHERE e.status=1 AND ce.id_categoria_evento=" . $idCategoria . " order by e.id_evento desc LIMIT " . $params["limite"];

            $dados = self::executaGetAll($sql);
            self::getObjSmarty()->assign("LARGURA", $params["largura"]);
            self::getObjSmarty()->assign("DADOS", $dados);
            $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "gridEventosModel01.tpl");
        } else {
            //ESTRUTURA INICIAL PAGINACAO
            $config = self::getDadosConfig();
            $limite = $config["paginacao_eventos_limite"];
            $pag = ($_GET['pag']);
            if ($idCategoria) {
                $sql = "SELECT e.*,ce.descricao as desc_categoria FROM tb_eventos e INNER JOIN tb_categorias_eventos ce ON ce.id_categoria_evento=e.id_categoria_evento 
                        WHERE e.status=1 AND ce.id_categoria_evento=" . $idCategoria . " order by e.id_evento desc " . self::getPaginacaoLimite($pag, $limite);
                $sqlCount = "SELECT count(*) as total FROM tb_eventos e INNER JOIN tb_categorias_eventos ce ON ce.id_categoria_evento=e.id_categoria_evento 
                             WHERE e.status=1 AND ce.id_categoria_evento=" . $idCategoria;
            } else {
                $sql = "SELECT e.*,ce.descricao as desc_categoria FROM tb_eventos e INNER JOIN tb_categorias_eventos ce ON ce.id_categoria_evento=e.id_categoria_evento 
                WHERE e.status=1 order by e.id_evento desc " . self::getPaginacaoLimite($pag, $limite);
                $sqlCount = "SELECT count(*) as total FROM tb_eventos e INNER JOIN tb_categorias_eventos ce ON ce.id_categoria_evento=e.id_categoria_evento 
                             WHERE e.status=1";
            }

            $total = self::executaGetRowEnd($sqlCount);
            $dados = self::executaGetAll($sql);
            self::getObjSmarty()->assign("DADOS", $dados);
            //ESTRUTURA FINAL PAGINACAO 
            self::getPaginacao(self::getObjSmarty(), $pag, $total, $limite);
            ######################################################
            $html = self::getObjSmarty()->fetch(PASTA_CONTEUDO_MODEL . "listaEventos.tpl");
        }
        return $html;
    }

    public function totalVotosOpcoes($idQuestao) {
        $totalVotos = self::totalVotos($idQuestao);
        $sql = "SELECT v.id_opcao,count(v.id_voto)as total,op.descricao FROM tb_enquete_votos v
            INNER JOIN tb_enquete_opcoes op ON op.id_opcao=v.id_opcao WHERE op.id_opcao IN (select id_opcao from tb_enquete_opcoes where id_questao=" . $idQuestao . ")
            group by id_opcao";

        $total = self::executaGetAll($sql);
        foreach ($total as $i => $valor) {
            $total[$i]["percent"] = (string) floor(100 * (int) $valor["total"] / $totalVotos) . "%";
        }
        return $total;
    }

    public function getGaleriaFotosFancybox($params = null, $smarty = null) {
        //ESTRUTURA INICIAL PAGINACAO
        $config = self::getDadosConfig();
        $limite = $config["paginacao_galeria_limite"];
        $pag = ($_GET['pag']);
        //############################
        $sqlCount = "SELECT count(*) as total FROM tb_fotos  WHERE status=1 AND id_categoria_fotos=" . $params["id_album"] . "";
        $total = end(self::executaGetRow($sqlCount));
        //SELECIONANDO COM PAGINACAO
        $sql = "SELECT * FROM tb_fotos WHERE status=1 AND id_categoria_fotos=" . $params["id_album"] . " ORDER BY id_foto DESC " . self::getPaginacaoLimite($pag, $limite);
        //##########################
        $sqlAlbum = "SELECT cf.descricao as desc_categoria,tc.descricao as desc_tipo FROM tb_categoria_fotos cf INNER JOIN tb_tipo_categoria tc ON cf.id_tipo_categoria=tc.id_tipo_categoria  WHERE cf.id_categoria_fotos=" . $params["id_album"] . "";
        $dados = self::executaGetAll($sql);
        $dadosAlbum = self::executaGetRow($sqlAlbum);
        //Funcoes::debuga($dados,$sql);
        $smarty->assign("DADOS_FOTOS", $dados);
        $smarty->assign("DADOS_ALBUM", $dadosAlbum);
        $smarty->assign("LADO", $config["paginacao_galeria_lado"]);
        //ESTRUTURA FINAL PAGINACAO 
        self::getPaginacao($smarty, $pag, $total, $limite);
        ######################################################
        //Funcoes::debuga($dadosAlbum,$dados);
        $html = $smarty->fetch(PASTA_CONTEUDO_MODEL . "galeria_fotos.tpl");
        return $html;
    }

    public function getPaginacaoLimite($pag, $limite) {
        $pag = filter_var($pag, FILTER_VALIDATE_INT);

        $inicio = 0;

        if ($pag != '') {
            $inicio = ($pag - 1) * $limite;
        }
        $str = " LIMIT " . $inicio . "," . $limite;

        return $str;
    }

    public function getPaginacao($smarty, $pag, $total, $limite) {
        $prox = $pag + 1;
        $smarty->assign("PROXIMO", $prox);
        $ant = $pag - 1;
        $smarty->assign("ANTERIOR", $ant);
        $ultima_pag = ceil($total / $limite);
        $smarty->assign("ULTIMO", $ultima_pag);
        $penultima = $ultima_pag - 1;
        $smarty->assign("PENULTIMO", $penultima);
        $adjacentes = 2;
        $smarty->assign("ADJACENTES", $adjacentes);
        $smarty->assign("NUMERACAO_PAG", self::getPaginacaoNumeracao($ultima_pag, $pag, $adjacentes, $penultima, $prox, $ant));
    }

    public function getPaginacaoNumeracao($ultima_pag, $pag, $adjacentes, $penultima, $prox, $ant) {
        if (!empty($pag) && $pag > 1) {
            $paginacao .= '<li><a  href="' . URL_SERVER_ATUAL . '">Primeira</a></li>';
            $paginacao .= '<li><a  href="' . URL_SERVER_ATUAL . 'pag/' . $ant . '/">Anterior</a></li>';
        } else {
            $paginacao .= '<li><a class="desabilita"  onclick="return false">Primeira</a></li>';
            $paginacao .= '<li><a class="desabilita"  onclick="return false">Anterior</a></li>';
        }
        if ($ultima_pag > 5) {
            if ($pag < 1 + (2 * $adjacentes)) {
                for ($i = 1; $i < 2 + (2 * $adjacentes); $i++) {
                    if ($i == $pag) {
                        $paginacao .= '<li class="active"><a  href="' . URL_SERVER_ATUAL . 'pag/' . $i . '/">' . $i . '</a></li>';
                    } else {
                        $paginacao .= '<li><a href="' . URL_SERVER_ATUAL . 'pag/' . $i . '/">' . $i . '</a></li>';
                    }
                }
                $paginacao .= '<li><a>...</a></li>';
                $paginacao .= '<li><a href="' . URL_SERVER_ATUAL . 'pag/' . $penultima . '/">' . $penultima . '</a></li>';
                $paginacao .= '<li><a href="' . URL_SERVER_ATUAL . 'pag/' . $ultima_pag . '/">' . $ultima_pag . '</a></li>';
            } elseif ($pag > (2 * $adjacentes) && $pag < $ultima_pag - 3) {
                $paginacao .= '<li><a href="' . URL_SERVER_ATUAL . 'pag/1/">1</a></li>';
                $paginacao .= '<li><a href="' . URL_SERVER_ATUAL . 'pag/1/">2</a></li> <li><a>...</a></li>';
                for ($i = $pag - $adjacentes; $i <= $pag + $adjacentes; $i++) {
                    if ($i == $pag) {
                        $paginacao .= '<li class="active"><a  href="' . URL_SERVER_ATUAL . 'pag/' . $i . '/">' . $i . '</a></li>';
                    } else {
                        $paginacao .= '<li><a href="' . URL_SERVER_ATUAL . 'pag/' . $i . '/">' . $i . '</a></li>';
                    }
                }
                $paginacao .= '<li><a>...</a></li>';
                $paginacao .= '<li><a href="' . URL_SERVER_ATUAL . 'pag/' . $penultima . '/">' . $penultima . '</a></li>';
                $paginacao .= '<li><a href="' . URL_SERVER_ATUAL . 'pag/' . $ultima_pag . '/">' . $ultima_pag . '</a></li>';
            } else {
                $paginacao .= '<li><a href="' . URL_SERVER_ATUAL . 'pag/1/">1</a></li>';
                $paginacao .= '<li><a href="' . URL_SERVER_ATUAL . 'pag/1/">2</a></li> <li><a>...</a></li>';
                for ($i = $ultima_pag - (4 + (2 * adjacentes)); $i <= $ultima_pag; $i++) {
                    if ($i == $pag) {
                        $paginacao .= '<li class="active"><a  href="' . URL_SERVER_ATUAL . 'pag/' . $i . '/">' . $i . '</a></li>';
                    } else {
                        $paginacao .= '<li><a href="' . URL_SERVER_ATUAL . 'pag/' . $i . '/">' . $i . '</a></li>';
                    }
                }
            }
        } else {
            if ($ultima_pag <= 5) {
                for ($i = 1; $i < $ultima_pag + 1; $i++) {
                    if ($i == $pag) {
                        $paginacao .= '<li class="active"><a  href="' . URL_SERVER_ATUAL . 'pag/' . $i . '/">' . $i . '</a></li>';
                    } else {
                        $paginacao .= '<li><a href="' . URL_SERVER_ATUAL . 'pag/' . $i . '/">' . $i . '</a></li>';
                    }
                }
            }
        }
        if ($pag < $ultima_pag) {
            $paginacao .= '<li><a  href="' . URL_SERVER_ATUAL . 'pag/' . $prox . '/">Próxima</a></li>';
            $paginacao .= '<li><a  href="' . URL_SERVER_ATUAL . 'pag/' . $ultima_pag . '/">Última</a></li>';
        } else {
            $paginacao .= '<li><a class="desabilita"  onclick="return false">Próxima</a></li>';
            $paginacao .= '<li><a class="desabilita"  onclick="return false">Última</a></li>';
        }
        return $paginacao;
    }

    public function getDadosConfig() {
        $sqlConfig = "SELECT * FROM tb_configuracoes  WHERE id_configuracao=1";
        $result = self::executaGetRow($sqlConfig);
        return $result;
    }

    public function getTagCompartilharNasRedes($params = null, $smarty = null) {
        $html = $smarty->fetch(PASTA_CONTEUDO_MODEL . "tagCompartilhar.tpl");
        return $html;
    }

    public function getMensagens($msg, $smarty, $descErro, $textoErro, $descSucesso, $textoSucesso = null, $erro_portal = null) {
        if ($msg == 1) {
            $smarty->assign("MSG", $textoSucesso);
            $smarty->assign("TITULO_MSG", $descSucesso);
            $smarty->assign("TIPO_MSG", ALERT_SUCESSO);
        } elseif ($msg == 0) {
            $smarty->assign("MSG", $textoErro);
            $smarty->assign("TITULO_MSG", $descErro);
            $smarty->assign("TIPO_MSG", ALERT_ERRO);
            self::enviaEmail(DESENVOLVEDOR, EMAIL_DESENVOLVEDOR, NOME_PUBLICO, SMTP_SERV_EMAIL, "Erro no portal:" . NOME_PUBLICO . " " . $erro_portal, "Erro no portal:" . NOME_PUBLICO . "\n" . $erro_portal);
        } elseif ($msg == 2) {
            $smarty->assign("MSG", $textoSucesso);
            $smarty->assign("TITULO_MSG", $descSucesso);
            $smarty->assign("TIPO_MSG", ALERT_SUCESSO);
        } elseif ($msg == 3) {
            $smarty->assign("MSG", $textoErro);
            $smarty->assign("TITULO_MSG", $descErro);
            $smarty->assign("TIPO_MSG", ALERT_ERRO);
        } elseif ($msg == 4) {
            $smarty->assign("MSG", $textoErro);
            $smarty->assign("TITULO_MSG", $descErro);
            $smarty->assign("TIPO_MSG", ALERT_ERRO);
        } elseif ($msg == 5) {
            $smarty->assign("MSG", $textoSucesso);
            $smarty->assign("TITULO_MSG", $descSucesso);
            $smarty->assign("TIPO_MSG", ALERT_SUCESSO);
        }
    }

    public function getMensagensSimples($smarty, $desc, $texto, $alerta) {
        $smarty->assign("TITULO_MSG", $desc);
        $smarty->assign("MSG", $texto);
        $smarty->assign("TIPO_MSG", $alerta);
    }

    public function getFormContato($params = null, $smarty = null) {
        if (isset($_GET['msg']) && !empty($_GET['msg'])) {
            self::getMensagens($_GET['msg'], $smarty, "Contato não foi enviado!", "Tente novamente mais tarde.", "Contato enviado com sucesso!", "Entraremos em contato em breve por e-mail ou telefone.", "Erro ao registrar um contato, função getFormContato");
        }
        $sql = "SELECT info_form_contato FROM tb_informacoes_portal WHERE id_informacoes=1";
        $smarty->assign("INFO_CONTATO", self::executaGetRowEnd($sql));
        $captcha = $smarty->fetch(PASTA_CONTEUDO_MODEL . "captcha.tpl");
        $smarty->assign("CAPTCHA", $captcha);
        $html = $smarty->fetch(PASTA_CONTEUDO_MODEL . "formcontato_portal.tpl");
        return $html;
    }

    public function getPerfilUsuario($params = null, $smarty = null) {
        if (isset($_GET['msg']) && !empty($_GET['msg'])) {
            if ($_GET['msg'] == 1 || $_GET['msg'] == 0) {
                self::getMensagens($_GET['msg'], $smarty, "Dados não foram alterados!", "Desculpe, estamos trabalhando para resolver o problema.", "Dados alterados com sucesso!", "Obrigado, continue mantendo seus dados sempre atualizados.", "Erro ao salvar dados de perfil, função getPerfilUsuario");
            } elseif ($_GET['msg'] == 2 || $_GET['msg'] == 3) {
                self::getMensagens($_GET['msg'], $smarty, "Senha não foi alterada!", "Senha inválida, informe a senha correta.", "Senha alterada com sucesso!", "Dica de segurança, nunca forneça sua senha para terceiros.");
            } elseif ($_GET['msg'] == 4 || $_GET['msg'] == 5) {
                self::getMensagens($_GET['msg'], $smarty, "Senha não foi gerada!", "Verique se os e-mails em seus dados pessoais estão corretos.", "Uma nova senha foi enviada para seu e-mail!", "Verifique em sua caixa de e-mails, se não encontrar verique se está na caixa de spans ou lixeira.");
            } elseif ($_GET['msg'] == 6) {
                self::getMensagensSimples($smarty, "Não foi possível alterar a senha!", "Tente novamente mais tarde ou informe o problema pelo e-mail:" . SMTP_SERV_EMAIL, ALERT_ERRO);
            } elseif ($_GET['msg'] == 7) {
                self::getMensagensSimples($smarty, "Senha alterada com sucesso!", "Agora você está em seu perfil de usuário.", ALERT_SUCESSO);
            }
        }
        $id_usuario = self::getObjUsuario()->getIdUsuario();
        $sql = "SELECT * FROM tb_usuario WHERE id_usuario=" . $id_usuario;
        $result = self::executaGetRow($sql);
        //método para preencher o formulário
        Funcoes::preparaDadosFormTipoTela($result, $id_usuario, $smarty);
        //Funcoes::getCaptcha();
        $html = $smarty->fetch(PASTA_CONTEUDO_MODEL . "perfilUsuario.tpl");
        return $html;
    }

    public function getLoginVisitante($params = null, $smarty = null) {
        if (isset($_GET['msg']) && !empty($_GET['msg'])) {
            if ($_GET['msg'] == 0) {
                self::getMensagensSimples($smarty, "Atenção!", "O código informado está incorreto.", ALERT_ERRO);
            } elseif ($_GET['msg'] == 1) {
                self::getMensagensSimples($smarty, "Atenção!", "Email já existe em nossa base de dados.", ALERT_ERRO);
            } elseif ($_GET['msg'] == 2) {
                self::getMensagensSimples($smarty, "Não foi possível cadastrar!", "Tente novamente mais tarde, se o erro continuar, entre em contato por e-mail:" . SMTP_SERV_EMAIL . ".", ALERT_ERRO);
            } elseif ($_GET['msg'] == 3) {
                self::getMensagensSimples($smarty, "Atenção, o cadastro foi efetuado, mas o link de ativação não pode ser enviado!", "Tente novamente mais tarde, se o erro continuar, entre em contato pelo e-mail:" . SMTP_SERV_EMAIL . " informando o problema e informe tambem o e-mail que cadastrou.", ALERT_ERRO);
            } elseif ($_GET['msg'] == 4) {
                self::getMensagensSimples($smarty, "Cadastro efetuado com sucesso!", "Um link de ativação foi enviado para seu e-mail, clique nele para ativar seu cadastro.", ALERT_SUCESSO);
            } elseif ($_GET['msg'] == 5) {
                self::getMensagensSimples($smarty, "Login ou senha inválidos!", "Informe login e senha corretos.", ALERT_ERRO);
            } elseif ($_GET['msg'] == 6) {
                self::getMensagensSimples($smarty, "Solicitação não foi feita!", "Informe o e-mail correto.", ALERT_ERRO);
            } elseif ($_GET['msg'] == 7) {
                self::getMensagensSimples($smarty, "Solicitação concluída!", "O link para criação de nova senha foi enviado para seu e-mail.", ALERT_SUCESSO);
            }
        }

        $btLogarFacebook = $smarty->fetch(PASTA_CONTEUDO_MODEL . "btLoginFacebook.tpl");
        $btCadastrarFacebook = $smarty->fetch(PASTA_CONTEUDO_MODEL . "btCadastrarComFacebook.tpl");
        $captcha = $smarty->fetch(PASTA_CONTEUDO_MODEL . "captcha.tpl");
        $smarty->assign("BT_LOGAR_FACEBOOK", $btLogarFacebook);
        $smarty->assign("BT_CADASTRAR_FACEBOOK", $btCadastrarFacebook);
        $smarty->assign("CAPTCHA", $captcha);
        $html = $smarty->fetch(PASTA_CONTEUDO_MODEL . "loginVisitante.tpl");
        return $html;
    }

    public function enviaEmail($nome_destinatario, $email_destinatario, $nome_remetente, $email_remetente, $assunto, $mensagem, $is_html = false) {
        $dadosEmail = Funcoes::montaParametrosEmail($nome_destinatario, $email_destinatario, $nome_remetente, $email_remetente, $assunto, $mensagem, $is_html = false);
        return Funcoes::enviaEmail($dadosEmail);
    }

    public function destroiSessaoPost($params = null, $smarty = null) {
        Funcoes::destroiPostSession($params["nome_sessao"]);
    }

}

?>
